Kibanaの使い方 〜環境準備〜【Amazon Elasticsearch Service】
どうも!大阪オフィスの西村祐二です。
アクセスログや、さまざまなログをAmazon Elasticsearch Serviceに配信し、Kibanaで可視化するということがよくあると思います。
下記ブログではじめて触ったのですが、すごく使い勝手がよく、使いこなせるようになりたいなと思ったので、 個人的な備忘録も兼ねて、何回かに分けてKibanaの使い方をまとめていきたいと思います。
今回はKibanaを使うための環境準備となります。
(本ブログは2017/12/25時点の内容となります)
環境
- サービス:Amazon Elasticsearch Service
- Elasticsearch:6.0
- Kibana:6.0.1
Amazon Elasticsearch Serviceの設定
Kibanaを利用するために、Amazon Elasticsearch Serviceの設定を行っていきます。
▼マネージメントコンソールから作成していきます。 Elasticsearchのドメイン名は、今回「test-es」として作成します。
▼インスタンスタイプは「t2.small.elasticsearch」としています。
▼ストレージの設定はデフォルトのままです。
▼アクセスの設定は パブリックアクセスとして、アクセスポリシーを特定のIPのみ許可するように設定しています。
▼作成が完了したら、下記リンクをクリックしKibanaにアクセスします。
▼Kibanaにアクセスできたら、下記画面に移動しているかと思います。
動作確認
Kibanaで可視化するためには、Elasticsearchへデータを取り込む必要があります。
Amazon Elasticsearch Serviceドメインにデータをアップロードするには、コマンドラインから Elasticsearch REST API の index および bulk を使用します。
注意点として、Headerを明示的に指定しないとエラーとなります。
Amazon Elasticsearch Service で Elasticsearch 6.0 が利用可能になりました
今回、下記映画の情報をPUTしてみたいと思います。
{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson","Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}
実行コマンド
# curl -H "Content-Type: application/json" -XPUT https://search-test-es-XXXXXXXXXXXXXXX.ap-northeast-1.es.amazonaws.com/movies/movie/1 -d '{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson","Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}' {"_index":"movies","_type":"movie","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
データのPUTがうまくいったら、 次は「mars」という単語を検索してみます。
# curl -XGET 'https://search-test-es-XXXXXXXXXXXXXX.ap-northeast-1.es.amazonaws.com/movies/_search?q=mars' {"took":4,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":0.2876821,"hits":[{"_index":"movies","_type":"movie","_id":"1","_score":0.2876821,"_source":{"director": "Burton, Tim", "genre": ["Comedy","Sci-Fi"], "year": 1996, "actor": ["Jack Nicholson","Pierce Brosnan","Sarah Jessica Parker"], "title": "Mars Attacks!"}}]}}%
Kibanaからも検索し、PUTしたデータが表示されるか確認します。
サンプルデータをElasticsearchに取り込む
公式ドキュメントにサンプルデータがあります。 これを使って可視化していきます。
下記ファイルをローカルにダウンロードしてください。
- shakespeare.json
- シェイクスピアの作品をフィールド毎に解析したjsonデータ。
- accounts.zip
- ランダムに生成された架空のアカウントデータ。
- logs.jsonl.gz
- ランダムに生成された一連のログデータ。
ファイルを解凍します。
# unzip accounts.zip # gunzip logs.jsonl.gz
データを取り込みます。
# curl -H 'Content-Type: application/x-ndjson' -XPOST 'https://search-test-es-XXXXXXXXXXXXX.ap-northeast-1.es.amazonaws.com/bank/account/_bulk?pretty' --data-binary @accounts.json # curl -H 'Content-Type: application/x-ndjson' -XPOST 'https://search-test-es-XXXXXXXXXXXXX.ap-northeast-1.es.amazonaws.com/shakespeare/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json # curl -H 'Content-Type: application/x-ndjson' -XPOST 'https://search-test-es-XXXXXXXXXXXXX.ap-northeast-1.es.amazonaws.com/_bulk?pretty' --data-binary @logs.jsonl
{"Message":"Request size exceeded 10485760 bytes"}
のようなメッセージが出力されたと思います。
これはインスタンスタイプによってサポートされている最大の HTTP リクエストペイロードの制限があり、それにひっかかってるためです。
HTTP リクエストペイロードが100MBの「c4.xlarge.elasticsearch」に変更して
再度コマンドを実行しましょう。
参考ドキュメントはこちらです。
▼データの取り込みが完了したら、マネージメントコンソールから取り込んだデータのインデックスが確認できます。 「bank」「shakespeare」「logstash」が確認できます。
これで準備完了です。
さいごに
いかがだったでしょうか。 Kibanaを使うための、Amazon Elasticsearch Serviceの設定とデータの取り込みを行いました。
次はいよいよKibanaを使っていきます。